package com.huhao.wshare.service;

import com.huhao.wshare.dto.Friend.Request.*;
import com.huhao.wshare.dto.Friend.Response.AcceptFriendResponse;

import java.util.List;

public interface FriendService {

    /**
     * 发送好友请求
     * @return FriendRequestInfo 包含请求方和接收方信息的 DTO
     */
    FriendRequestInfo sendFriendRequest(Long currentUserId, AddFriendRequest request);

    /**
     * 接受好友请求
     * @param currentUserId 当前用户 ID (接收方)
     * @param requestId 好友请求的 ID
     * @param request 包含接收方为好友设置的备注的请求体
     * @return AcceptFriendResponse 包含 code 和 message 的标准响应体
     */
    // --- 修改点：更新返回类型 ---
    AcceptFriendResponse acceptFriendRequest(Long currentUserId, Long requestId, AcceptFriendRequest request);
    /**
     * 【新增】拒绝/删除好友请求
     * @param currentUserId 当前用户 ID (请求接收方)
     * @param requestId 好友请求的 ID
     */
    void rejectFriendRequest(Long currentUserId, Long requestId);
    /**
     * 查询好友列表
     * @param currentUserId 当前用户 ID
     * @return 好友信息列表
     */
    List<FriendListItem> getFriendList(Long currentUserId);

    /**
     * 查询所有待处理的好友请求
     * @param currentUserId 当前用户 ID
     * @return 待处理的好友请求列表
     */
    List<PendingFriendRequestItem> getPendingFriendRequests(Long currentUserId);

    /**
     * 删除好友
     * @param currentUserId 当前用户 ID
     * @param friendId 要删除的好友的用户 ID
     */
    void deleteFriend(Long currentUserId, Long friendId);

    /**
     * 【新增】修改好友备注
     * @param currentUserId 当前登录用户ID
     * @param friendId 要修改备注的好友的用户ID
     * @param request 包含新备注的请求体
     * @return 包含成功信息和新备注的响应体
     */
    UpdateRemarkResponse updateFriendRemark(Long currentUserId, Long friendId, UpdateRemarkRequest request);
}
